import {BasicEntity} from "@/common/BasicEntity";
import {ListUtil} from "@/utils/ListUtil";
import {NotEmpty, Length} from "@/decorator/Valid";

/**
 * 【登录用户】3001、店铺发布商品新品 (http://doc.tankemao.net/docs/cloud-shop/cloud-shop-1c5c6178mqde7)
 * 请求方式：POST
 */
export const CLOUD_SHOP_PRODUCT_INFO_CREATE = "/cloudShop/cloudShopProductInfo/create";

/**
 * 请求参数:
 */
export class CreateParams extends BasicEntity {

  /**
   * 商家店铺ID
   * @type {string}
   */
  @NotEmpty("商家店铺ID不能为空")
  shopId;

  /**
   * 平台类型ID
   * @type {string}
   */
  @NotEmpty("平台类型ID不能为空")
  typeId;

  /**
   * 店铺产品品类ID
   * @type {string}
   */
  @NotEmpty("店铺产品品类ID不能为空")
  platformProductCategoryId;

  /**
   * 店铺分组ID 以逗号分隔
   * @type {string}
   */
  groupIds;

  /**
   * 商品名称
   * @type {string}
   */
  @NotEmpty("商品名称不能为空")
  productName;

  /**
   * 商品图片
   * @type {string}
   */
  @NotEmpty("商品图片不能为空")
  productPic;

  /**
   * 配送方式 0-快递配送 1-到店自提， 以逗号分隔
   * @type {string}
   */
  shippingMode;

  /**
   * 运费模板ID 0代表统一运费
   * @type {string}
   */
  freightTemplateId;

  /**
   * 统一运费金额
   * @type {number}
   */
  uniteFreightAmount;

  /**
   * 商品页模板ID
   * @type {string}
   */
  productTemplateId;

  /**
   * 新品标识 0-否 1-是
   * @type {number}
   */
  newFlag;

  /**
   * 推荐标识 0-否 1-是
   * @type {number}
   */
  recommendFlag;

  /**
   * 会员折扣标识 0-否 1-是
   * @type {number}
   */
  memberDiscountFlag;

  /**
   * 虚拟销量
   * @type {number}
   */
  virtualSaleCount;

  /**
   * 商品状态 1-立即上架 2-预售 0-暂不上架
   * @type {number}
   */
  @NotEmpty("商品状态不能为空")
  productState;

  /**
   * 排序
   * @type {number}
   */
  sort;

  /**
   * 音视频轮播URL列表 以逗号分隔
   * @type {string}
   */
  videoUrls;

  /**
   * 商品描述
   * @type {string}
   */
  description;

  /**
   * 商品详情网页内容
   * @type {string}
   */
  @NotEmpty("商品详情网页内容不能为空")
  detailHtml;

  /**
   * 商品描述属性JSON格式 格式：[{“key”:”包装”,”value”:”盒装、袋装”}]
   * @type {string}
   */
  descAttrData;

  /**
   * 以逗号分割的商品服务：1-不支持买家申请退款；2-支持买家申请退款
   * @type {string}
   */
  serviceTags;

  /**
   * 员工分销商返佣类型 0-无返佣 1-按照固定金额返佣 2-按照商品价格百分比返佣
   * @type {number}
   */
  staffRebateType;

  /**
   * 员工分销商返佣金额
   * @type {number}
   */
  staffRebateAmount;

  /**
   * 员工分销商返佣比率 0.10 则返佣金额为商品价格的10%
   * @type {number}
   */
  staffRebateRate;

  /**
   * 普通分销商返佣类型 0-无返佣 1-按照固定金额返佣 2-按照商品价格百分比返佣
   * @type {number}
   */
  customerRebateType;

  /**
   * 普通分销商返佣固定金额
   * @type {number}
   */
  customerRebateAmount;

  /**
   * 普通分销商返佣比率 0.10 则返佣金额为商品价格的10%
   * @type {number}
   */
  customerRebateRate;

  /**
   * 探客猫平台返佣类型 0-无返佣 1-按照固定金额返佣 2-按照商品价格百分比返佣
   * @type {number}
   */
  platformRebateType;

  /**
   * 探客猫平台返佣金额
   * @type {number}
   */
  platformRebateAmount;

  /**
   * 探客猫平台返佣比率 0.10 则返佣金额为商品价格的10%
   * @type {number}
   */
  platformRebateRate;

  /**
   * 商品sku集合
   * @type {Array<ShopProductSku>}
   */
  //TODO 找不到对应类型
  @NotEmpty("商品sku集合不能为空")
  shopProductSkuList = ListUtil.toList(new ShopProductSku());

  /**
   * 电子券规则
   * @type {ProductEVoucher}
   */
  productEVoucher;

  /**
   * 返佣标识 0-商品 1-商品规格
   * @type {number}
   */
  @NotEmpty("返佣标识不能为空")
  rebateFlag;

  /**
   * 限购标识 0-不限制 1-终身限购 2-每天限购 3-每周限购 4-每月限购
   * @type {number}
   */
  productQtyLimit;

  /**
   * 限购数量
   * @type {number}
   */
  productQty;

  /**
   * 用户限购标识 0-否 1-是
   * @type {number}
   */
  customerLimitFlag;

  /**
   * 用户限购 格式：[{“type”:0,”key”:”用户标签”,”value”:1234567890},{“type”:1,”key”:”会员卡模板”,”value”:1234567890}]
   * @type {string}
   */
  customerLimit;

  /**
   * 起售数量
   * @type {number}
   */
  minProductQty;

  /**
   * 可购买时间 0：不限 1：指定时间 仅对每天（product_qty_limit = 2）有效
   * @type {number}
   */
  timeLimitType;

  /**
   * 可购买时间：开始时间
   * @type {string}
   */
  beginTime;

  /**
   * 可购买时间：结束时间
   * @type {string}
   */
  endTime;

  /**
   * 组件自定义排序Map
   * @type {string}
   */
  sortMap;

}

/**
 * 电子券规则
 */
export class ProductEVoucher extends BasicEntity {

  /**
   * 电子劵有效期类型 0-固定日期有效 1-支付当日开始计算有效期 2-支付次日开始计算有效期 3-永久有效
   * @type {number}
   */
  validityDateType;

  /**
   * 固定有效期：开始日期 格式：yyyy-MM-dd
   * @type {string}
   */
  beginValidityDate;

  /**
   * 固定有效期：结束日期 格式：yyyy-MM-dd
   * @type {string}
   */
  endValidityDate;

  /**
   * 支付后第几天生效（当天有效 值为0）
   * @type {number}
   */
  beginValidityDay;

  /**
   * 支付后生效有效期天数
   * @type {number}
   */
  validityDay;

  /**
   * 一周几天可用 以逗号分隔 如：1,2,3（1-周一 2-周二 3-周三）
   * @type {string}
   */
  usableDays;

  /**
   * 可用时段 0：全部时段可用 1：部分时段可用
   * @type {number}
   */
  timeLimitType;

  /**
   * 可用时段：开始时间 格式：HH:mm:00
   * @type {string}
   */
  beginTime;

  /**
   * 可用时段：结束时间 格式：HH:mm:00
   * @type {string}
   */
  endTime;

  /**
   * 节假日是否可用 0-否 1-是
   * @type {number}
   */
  @NotEmpty("节假日是否可用不能为空")
  holidayUseFlag;

  /**
   * 适用门店类型 0-全部门店 1-指定门店
   * @type {number}
   */
  @NotEmpty("适用门店类型不能为空")
  supportShopType;

  /**
   * 适用门店 格式：[{“id”:1336212905638748200,”name”:”智慧门店”}]
   * @type {string}
   */
  @Length({max: 1024, message: "适用门店 长度最大1024个字符"})
  supportShop;

}

/**
 * 商品规格
 */
//TODO 找不到对应类名
export class ShopProductSku extends BasicEntity {

  /**
   * 商品规格编码 商家手填
   * @type {string}
   */
  skuCode;

  /**
   * 商品规格名称
   * @type {string}
   */
  skuName;

  /**
   * 商品规格标准售价(划线价、市场价)
   * @type {number}
   */
  @NotEmpty("商品规格标准售价(划线价、市场价)不能为空")
  standardPrice;

  /**
   * 商品规格实际售价
   * @type {number}
   */
  @NotEmpty("商品规格实际售价不能为空")
  actualPrice;

  /**
   * 商品规格成本
   * @type {number}
   */
  skuCost;

  /**
   * 商品规格库存
   * @type {number}
   */
  @NotEmpty("商品规格库存不能为空")
  skuStock;

  /**
   * 商品规格重量
   * @type {number}
   */
  @NotEmpty("商品规格重量不能为空")
  skuWeight;

  /**
   * 商品规格销售属性json格式 格式：[{“key”:”包装”,”value”:”盒装”}]
   * @type {string}
   */
  attrData;

  /**
   * 员工分销商返佣类型 0-无返佣 1-按照固定金额返佣 2-按照商品价格百分比返佣
   * @type {number}
   */
  staffRebateType;

  /**
   * 员工分销商返佣金额
   * @type {number}
   */
  staffRebateAmount;

  /**
   * 员工分销商返佣比率 0.10 则返佣金额为商品价格的10%
   * @type {number}
   */
  staffRebateRate;

  /**
   * 普通分销商返佣类型 0-无返佣 1-按照固定金额返佣 2-按照商品价格百分比返佣
   * @type {number}
   */
  customerRebateType;

  /**
   * 普通分销商返佣固定金额
   * @type {number}
   */
  customerRebateAmount;

  /**
   * 普通分销商返佣比率 0.10 则返佣金额为商品价格的10%
   * @type {number}
   */
  customerRebateRate;

  /**
   * 探客猫平台返佣类型 0-无返佣 1-按照固定金额返佣 2-按照商品价格百分比返佣
   * @type {number}
   */
  platformRebateType;

  /**
   * 探客猫平台返佣金额
   * @type {number}
   */
  platformRebateAmount;

  /**
   * 探客猫平台返佣比率 0.10 则返佣金额为商品价格的10%
   * @type {number}
   */
  platformRebateRate;

}

/**
 * 返回参数说明:
 */
export class CreateResult extends BasicEntity {

  /**
   * 店铺商品ID
   * @type {string}
   */
  data;

}
